home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Leser 15 / Amiga Plus Leser CD 15.iso / Tools / Development / mmu / MultiRen / Developers / Template.mrp.c < prev    next >
C/C++ Source or Header  |  2002-03-12  |  4KB  |  139 lines

  1. /* Template for making plugins for MultiRen in C.
  2.    Please use this template and change NOTHING in main()!
  3.  
  4.    By Deniil 715! 2001-12-12, rev #2.
  5. */
  6.  
  7. #include<proto/exec.h>
  8. #include<proto/dos.h>
  9. #include<proto/intuition.h>
  10. #include<exec/tasks.h>
  11. #include<intuition/intuition.h>
  12. #include<stdlib.h>
  13. #include<stdio.h>
  14.  
  15. #define NUMSTRINGS_FOR_THIS_PLUGIN 1
  16. #define FILE_NAME_LENGTH 512
  17. #define COM_ASK 1
  18. #define COM_EXTRACT 2
  19. #define COM_CONFIGURE 3
  20. #define COM_ABOUT 4
  21. #define COM_QUIT 5
  22. #define ERR_OK 0
  23. #define ERR_NOMEM 1
  24. #define ERR_NOFILE 2
  25. #define ERR_NOSIG 3
  26. #define ERR_NOTIMPL 4
  27. #define ERR_UNKNOWN 5
  28. #define ERR_OTHER 6
  29. #define ERR_WRONGFORMAT 7
  30. #define ERR_NOINFO 8
  31. #define ERR_FATAL 20
  32.  
  33. const char VersionString[]="$VER: Template v1.1a by Deniil 715! rev.#2 (2001-12-12)"
  34.  
  35. struct multiren_plugin {
  36.   long id;
  37.   struct Task *task;
  38.   long sig;
  39.   short ret;
  40.   char command;
  41.   char numstrings;       /* You will */
  42.   char *stringlist[256]; /* only use */
  43.   char *name;            /* these 4 */
  44.   char newname;          /* elements */
  45. };
  46.  
  47. short ask(void);
  48. short extract(void);
  49. short configure(void);
  50. short about(void);
  51. short cleanup(void);
  52. short req(char*,char*);
  53.  
  54. struct multiren_plugin *mrp;
  55.  
  56. int main(int argc,char *argv[]) {
  57.   char sigbit;
  58.   long sig, msig;
  59.   struct Task *mtask;
  60.   if(DOSBase=(struct DosLibrary*)OpenLibrary("dos.library",0)) {
  61.     if(IntuitionBase=(struct IntuitionBase*)OpenLibrary("intuition.library",0)) {
  62.       if(argc==2) {
  63.         if(mrp=(struct multiren_plugin*)atol(argv[1])) {
  64.           if(mrp->id==*(long*)"MRPO") {
  65.             if((sigbit=AllocSignal(-1))>=0) {
  66.               sig=1<<sigbit;
  67.               while(1) {
  68.                 switch(mrp->command) {
  69.                 case COM_ASK:
  70.                   mtask=mrp->task;
  71.                   msig=mrp->sig;
  72.                   mrp->ret=ask();
  73.                   SetProgramName(mrp->name);
  74.                   mrp->task=FindTask(0L);
  75.                   mrp->sig=sig;
  76.                   break;
  77.                 case COM_EXTRACT:   mrp->ret=extract(); break;
  78.                 case COM_CONFIGURE: mrp->ret=configure(); break;
  79.                 case COM_ABOUT:     mrp->ret=about(); break;
  80.                 case COM_QUIT:
  81.                   mrp->ret=cleanup();
  82.                   FreeSignal(sigbit);
  83.                   CloseLibrary((struct Library*)DOSBase);
  84.                   Signal(mtask,msig);
  85.                   return 0;
  86.                 default:
  87.                   mrp->ret=ERR_UNKNOWN;
  88.                 }
  89.                 Signal(mtask,msig);
  90.                 Wait(sig);
  91.               }
  92.             }
  93.             else {
  94.               mrp->ret=ERR_NOSIG;
  95.               Signal(mrp->task,mrp->sig);
  96.               return 0;
  97.             }
  98.           }
  99.         }
  100.       }
  101.       CloseLibrary((struct Library*)IntuitionBase);
  102.     }
  103.     CloseLibrary((struct Library*)DOSBase);
  104.   }
  105.   printf("This is a plugin for MultiRen!\n"
  106.          "It is not supposed to be executed manually!\n"
  107.          "Use it through the Renplacer tool in MultiRen instead!\n");
  108.   return ERR_FATAL;
  109. }
  110.  
  111. short ask() {
  112.   mrp->numstrings=NUMSTRINGS_FOR_THIS_PLUGIN;
  113.   mrp->stringlist[0]="<template>";
  114.   mrp->name="<template>";
  115.   mrp->newname=0; /* 0 = Request Old name, 1 = Request New name */
  116.   return ERR_OK;
  117. }
  118.  
  119. short extract() {
  120.   mrp->stringlist[0]="<template>";
  121.   return ERR_OK;
  122. }
  123.  
  124. short configure() { return ERR_NOTIMPL; }
  125.  
  126. short about() {
  127.   req("About template..","OK");
  128.   return ERR_OK;
  129. }
  130.  
  131. short cleanup() { return ERR_OK; }
  132.  
  133. short req(char *body,char *gads) {
  134.   struct EasyStruct tags;
  135.   tags.es_Title="Test Plugin";
  136.   tags.es_TextFormat=body;
  137.   tags.es_GadgetFormat=gads;
  138.   return EasyRequestArgs(NULL,&tags,NULL,NULL);
  139. }